package no.sachmuld.methodcombination.examples.reflection.closstandardstyle;

import no.sachmuld.methodcombination.api.BehaviourChain;
import no.sachmuld.methodcombination.api.reflection.Standard;

/**
 *
 */
public abstract class Foo {

    private BehaviourChain<FooBehaviour> chain = new BehaviourChain<>();

    final public String bar(int i) {
        return new Standard<String>().build(FooBehaviour.class, Foo.class, "bar", Integer.TYPE).execute(this, chain, i);
    }

    final protected Foo with(FooBehaviour... fooBehaviours) {
        chain.addAll(fooBehaviours);
        return this;
    }


}
